quartz: move dialogs to the same window level as utility windows
authorMichael Natterer <mitch@gimp.org>
Thu, 6 Jun 2013 13:39:53 +0000 (15:39 +0200)
committerMichael Natterer <mitch@gimp.org>
Thu, 6 Jun 2013 13:49:00 +0000 (15:49 +0200)
window_type_hint_to_level(): applied patch from Paul Davis which moves
dialogs to NSFloatingWindowLevel. This is not quite the perfect
solution, but it's a pragmatic fix that makes apps which have both
window types much more usable, and prevents dialog from disappearing
under an application's main window.
(cherry picked from commit 59d49e1566faeed80d2b2052c42fe6c5e9153190)

gdk/quartz/gdkwindow-quartz.c

index 2403b04b2ea48f9817d764c27e088524fd6b128f..004c8673f256b8e776da4259403b0cb6bae34b3e 100644 (file)
@@ -2289,14 +2289,18 @@ window_type_hint_to_level (GdkWindowTypeHint hint)
       return NSTornOffMenuWindowLevel;
 
     case GDK_WINDOW_TYPE_HINT_DOCK:
+      return NSFloatingWindowLevel; /* NSDockWindowLevel is deprecated, and not replaced */
+
     case GDK_WINDOW_TYPE_HINT_UTILITY:
+    case GDK_WINDOW_TYPE_HINT_DIALOG:  /* Dialog window */
       return NSFloatingWindowLevel;
 
     case GDK_WINDOW_TYPE_HINT_NORMAL:  /* Normal toplevel window */
-    case GDK_WINDOW_TYPE_HINT_DIALOG:  /* Dialog window */
     case GDK_WINDOW_TYPE_HINT_TOOLBAR: /* Window used to implement toolbars */
-    case GDK_WINDOW_TYPE_HINT_DESKTOP: /* N/A */
-      break;
+      return NSNormalWindowLevel;
+
+    case GDK_WINDOW_TYPE_HINT_DESKTOP:
+      return kCGDesktopWindowLevelKey; /* doesn't map to any real Cocoa model */
 
     default:
       break;